package indi.lqzhi.tcpserver.manager;

import java.util.Collection;
import java.util.Optional;

/**
 * @Author: LQZhi
 * @ClassName: Manager
 * @Date: 2021-09-30 00-46
 * @Description: 总线的管理者
 * @Version: V1.0
 */
public interface Manager<K,V> {

    /**
     * 得到所有的客户端
     * @return 所有的客户端
     */
    Collection<V> getAllClient();

    /**
     * 清除所有的客户端
     */
    void clearAllClient();

    /**
     * 得到客户端
     * @param key 键
     * @return 客户端
     */
    Optional<V> getClient(K key);

    /**
     * 返回所有存活的数量
     * @return 存活的客户端数量
     */
     long getActiveClientCount();

    /**
     * 重置管理器，清空所有
     */
    void resetManager();

    /**
     * 注册客户端
     * @param key 键
     * @param value 值
     * @return true 注册成功 false 注册失败
     */
    boolean register(K key,V value);

    /**
     * 移除客户端
     * @param key 键
     * @param value 值
     * @return true 移除成功 false 移除失败
     */
    boolean unregister(K key,V value);

}
